package com.hxit.huaxiamelongarden.utils;

/**
 * @ClassName JwtUtil
 * @Author 12694
 * @Date 2025/1/20 14:29
 * @Version 1.0
 **/

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;

public class JwtUtil {
    private static final String SECRET_KEY = "hxit"; // 你的密钥
    private static final long EXPIRATION_TIME = 3600000; // 过期时间1小时

    // 生成JWT
    public static String generateToken(String userId) {
        return Jwts.builder()
                .setSubject(userId) // 设置用户名或ID
                .setIssuedAt(new Date()) // 设置发行时间
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME)) // 设置过期时间
                .signWith(SignatureAlgorithm.HS512, SECRET_KEY) // 使用密钥签名
                .compact();
    }

    // 获取JWT中的用户ID
    public static String getUserIdFromToken(String token) {
        Claims claims = Jwts.parser()
                .setSigningKey(SECRET_KEY)
                .parseClaimsJws(token)
                .getBody();
        return claims.getSubject(); // 获取主体，即用户ID
    }

    // 验证JWT是否有效
    public static boolean validateToken(String token) {
        try {
            Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token);
            return true;
        } catch (Exception e) {
            return false; // 如果验证失败
        }
    }
}

